package cn.com.yang.datastruct.list;

import java.util.Arrays;

/**
 * 手写实现ArrayList
 * @since 2023.07.16
 *
 */
public class MyArrayList {
    private Object[] arr;
    private int nElmes;//数组的真实长度
    //通过构造方法初始化数组
    public MyArrayList(){
        arr = new Object[10];
        nElmes = 0;
    }

    //实现插入数据项,注意要实现自动扩容

    public void insert(Object obj){
        //判断当前的元素个数有没有越界，如果说现在插入数组的新元素，下标要超过原数组的最大长度，进行扩容
        if (nElmes == arr.length){
            arr = Arrays.copyOf(arr,arr.length+(arr.length >> 1));
        }
        arr[nElmes++]=obj;
    }
    //遍历
    public void display(){
        for (int i =0;i<nElmes;i++){
            System.out.println(arr[i]+" ");
        }
    }

    public int find(Object obj){
        int i;
        for (i=0;i<nElmes;i++){
            if (obj.equals(arr[i])){
                break;
            }
        }
        if (i < nElmes){
            return i;
        }else {
            return -1;
        }
    }
    //删除
    public void delete(Object obj){
        int i=find(obj);
        if (i!=-1){
            System.arraycopy(arr,i+1,arr,i,nElmes-1-i);
            nElmes--;
        }
    }
}
